package com.jiangyg.devtools.execute.code.parser;

import com.jiangyg.devtools.base.Creator;
import com.jiangyg.devtools.entity.code.BeanDefinition;

import java.util.List;

/**
 * 类描述：统一的 Bean 定义生成器
 *
 * @author jiangyg
 * @version 1.0
 * @date 2023年09月22日
 */
public class UnitiveBeanDefinitionCreator implements Creator<BeanDefinition> {

    /**
     * 输入内容
     */
    private final String input;

    private UnitiveBeanDefinitionCreator(String input) {
        this.input = input;
    }

    public static UnitiveBeanDefinitionCreator build(String input) {
        return new UnitiveBeanDefinitionCreator(input);
    }

    @Override
    public BeanDefinition create() throws Exception {
        final List<PropertyParser> parsers = List.of(
                new SQLStringBeanPropertyParser(input),
                new JSONBeanPropertyParser(input),
                new SimpleBeanPropertyParser(input));
        for (PropertyParser parser : parsers) {
            if (parser.support()) {
                return parser.create();
            }
        }
        return null;
    }

}
